<?php
	/**
	 * 
	 * Enter description here ...
	 * @author Jeferson
	 *
	 */
	class Application_Model_DbTable_Telefone extends Zend_Db_Table_Abstract
	{
		/*
		 * 
		 */
		protected $_name	= "agenda.tb_telefone";
		protected $_schema	= "agenda";
		
		/**
		 * 
		 * Enter description here ...
		 * @param unknown_type $id
		 */
		public function get( $intCoTelefone )
		{
			$intCoTelefone	= ( int ) $intCoTelefone;
			$row			= $this->fetchRow( "co_telefone = " . $intCoTelefone );
			if ( ! $row ) throw new Exception( "Nenhum resultado encontrado " . $intCoTelefone );
			return $row->toArray();
		}
		
		/**
		 * 
		 * Enter description here ...
		 * @param array $arrDataForm
		 */
		public function salvar( $arrDataForm )
		{
			list( $arrDataForm[ "nu_ddd" ] , $arrDataForm[ "nu_telefone" ] ) = explode( ")" , $arrDataForm[ "nu_telefone" ] );
			$arrDataForm[ "nu_ddd" ]		= str_replace( "(" , "" , $arrDataForm[ "nu_ddd" ] );
			$arrDataForm[ "nu_telefone" ]	= str_replace( "-" , "" , $arrDataForm[ "nu_telefone" ] );
			$arrDataForm[ "dt_insercao" ]	= date( "Y-m-d" );
			if ( ! Library::isNullEmpty( $arrDataForm[ "co_telefone" ] ) )
			{
				$intCoTelefone = $arrDataForm[ "co_telefone" ];
				unset ( $arrDataForm[ "co_telefone" ] );
				return ( $this->update( $arrDataForm , "co_telefone = " . ( int ) $intCoTelefone ) );
			}
			else return ( $this->insert( $arrDataForm ) );
		}
		
		/**
		 * 
		 * Enter description here ...
		 * @param unknown_type $id
		 */
		public function excluir( $intCoTelefone )
		{
			$this->delete( "co_telefone = " . ( int ) $intCoTelefone );
		}
		
		/**
		 * 
		 * Lista os telefones de uma pessoa
		 * @param INTEGER $intCoPessoa
		 * @return ARRAY
		 */
		public function listarTelefone( $intCoPessoa )
		{
			$select = $this->select()
				->setIntegrityCheck( false )
				->from( array( "t"					=> $this->_name )	, 														  array( "t.co_telefone" , "( to_char( t.nu_ddd , '99' ) || to_char( t.nu_telefone , '99999999' ) ) AS nu_telefone_completo" )	, $this->_schema )
				->join( array( "tipo_telefone_gn"	=> "tb_generica" )	, "t.co_tipo_fone_gn = tipo_telefone_gn.co_generica"	, "ds_generica AS ds_tipo_telefone"																								, $this->_schema )
				->join( array( "operadora_gn"		=> "tb_generica" )	, "t.co_operadora_gn = operadora_gn.co_generica"		, "ds_generica AS ds_operadora"																									, $this->_schema )
				->where( "t.st_ativo = ?" , "S" )
				->where( "t.co_pessoa = ?" , $intCoPessoa )
				->order( array( "tipo_telefone_gn.ds_generica" , "operadora_gn.ds_generica" ) );
				
			# Retorno do metodo
			return ( $this->fetchAll( $select )->toArray() );
		}
	}